Media applications, including wireless communication, have been driving microprocessor development for more than a decade. In fact, most computing upgrades, in recent years, have been driven by either wireless communications or media applications predominantly within the computer segment, but also in enterprise segments for entertainment, enhanced education and communication purposes. Nevertheless, future wireless, as well as media applications, will require even higher computational requirements. As a result, tomorrow's personal computer (PC) will be even richer in audio visual effects, as well as improved usability, while wireless communications will enable computing to merge with communications.
Current wireless communication applications, including cellular phones as well as wireless networks and the like, are slowly replacing landline telephones as well as wired communication networks. However, as such wireless devices begin to proliferate current operating environments, protection of the communications information exchanged between such devices becomes increasingly important. As a result, encryption algorithms are commonly used to protect the integrity of transmitted content, while error control algorithms are used to recapture content in the event of lost of corrupted data during transmission.
Unfortunately, a very significant number of wireless communications, as well as encryption algorithms, utilize look-up tables. As known to those skilled in the art, look-up tables store results of computationally intensive operations which are calculated before an application start-up or during initialization application. In addition, some applications access data within the look-up tables in the random pattern. Consequently, it is often difficult to exploit any data level parallelism utilizing, for example, single instruction multiple data (SIMD) instructions. This is due to the fact that current instructions have no efficient way for loading a register in response to execution of a single instruction with data that is stored within randomly located addresses.
Moreover, current encryption, as well as communication algorithms are performed utilizing modular multiplication. For example, advanced encryption standards (AES), symmetric key encryption algorithms for both data, such as Rijndael and Twofish, use modular multiplication of bytes. As known to those skilled in the art, Rijndael is the AES encryption algorithm chosen to replace the data encryption standard (DES). In fact, secure sockets layer used for security in Netscape™ and Internet Explorer™ browsers is an application in which Rijndael will become widely used. Moreover, forward error control (FEC) provides error control algorithms for dealing with packet erasures used in wireless communications. FEC also utilizes modular multiplication of bytes.
As a result, both secure network transmissions and wireless communications require real time processing of large amounts of data. Unfortunately, modular multiplication is too computationally intensive to compute in real time. Currently, modular multiplication is implemented utilizing look-up tables that are accessed with scalar code load instructions. However, the table look-up methods only load one modular multiplication product per instruction. Consequently, these look-up table implementations can not exploit the data parallelism in the encryption and FEC algorithms.
Modular multiplication is performed utilizing finite field arithmetic. As known to those skilled in the art, there are several types of finite fields. The type used by the Rijndael, Twofish and FEC algorithms is referred to as Galois fields (GF) GF (28). As known to those skilled in the art, the 2 refers to the number of values a symbol may have (e.g., 0 or 1) and the exponent 8 refers to the number of symbols in an element; namely, the number of symbols in a byte. Consequently, GF (28) is well suited to calculations performed by computer operation.
Moreover, in finite fields GF (28), addition and subtraction are implemented with a byte or exclusive-OR (XOR) operation and multiplication is implemented with modular multiplication. Consequently, in each of the cases, the sum difference and products are also bytes. Unfortunately, the scalar multiplication look-up table methods utilized by current modular multiplication operations performed by encryption and communication algorithms cannot exploit the data level parallelism offered by finite field modular multiplication. Therefore, there remains a need to overcome one or more of the limitations in the above-described, existing art.